using MediatR;
using Warehouse.ErrorCode;

namespace Warehouse.Api.Write.AllCation.Command.Stoking
{
    /// <summary>
    /// 创建入库记录命令 - 出入库管理模块
    /// </summary>
    public class CreateInboundRecordCommand : IRequest<ApiResult<int>>
    {
        /// <summary>
        /// 入库单号
        /// </summary>
        public string InboundOrderNumber { get; set; }

        /// <summary>
        /// 关联调拨单号（可选）
        /// </summary>
        public string AllocateId { get; set; }

        /// <summary>
        /// 入库日期
        /// </summary>
        public DateTime InboundDate { get; set; }

        /// <summary>
        /// 产品编号
        /// </summary>
        public string ProductCode { get; set; }

        /// <summary>
        /// 产品名称
        /// </summary>
        public string ProductName { get; set; }

        /// <summary>
        /// 产品规格
        /// </summary>
        public string Specifications { get; set; }

        /// <summary>
        /// 入库数量
        /// </summary>
        public int Quantity { get; set; }

        /// <summary>
        /// 入库仓库
        /// </summary>
        public string InboundWarehouse { get; set; }

        /// <summary>
        /// 入库库位
        /// </summary>
        public string InboundLocation { get; set; }

        /// <summary>
        /// 入库操作人
        /// </summary>
        public string InboundOperator { get; set; }

        /// <summary>
        /// 入库类型（采购入库、调拨入库、退货入库等）
        /// </summary>
        public string InboundType { get; set; }

        /// <summary>
        /// 供应商信息（如果是采购入库）
        /// </summary>
        public string SupplierInfo { get; set; }

        /// <summary>
        /// 采购单号（如果是采购入库）
        /// </summary>
        public string PurchaseOrderNumber { get; set; }

        /// <summary>
        /// 质检状态（待质检、已质检、不合格等）
        /// </summary>
        public string QualityCheckStatus { get; set; }

        /// <summary>
        /// 质检员
        /// </summary>
        public string QualityInspector { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string Note { get; set; }

        /// <summary>
        /// 运输方式
        /// </summary>
        public string TransportMethod { get; set; }

        /// <summary>
        /// 实际到达时间
        /// </summary>
        public DateTime? ActualArrivalTime { get; set; }
    }
} 